package cn.wonderland.system.controller;

import cn.wonderland.basic.util.AjaxResult;
import cn.wonderland.basic.util.PageList;
import cn.wonderland.system.domain.Detail;
import cn.wonderland.system.query.DetailQuery;
import cn.wonderland.system.service.DetailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/detail")
public class DetailController {

    @Autowired
    private DetailService detailService;


    /*
     * 查询所有信息
     * */
    @GetMapping()
    public List<Detail> findAll() {
        return detailService.findAll();
    }

    /*
     * 查询房屋状态
     * */
    @GetMapping("/findHouseState")
    public List<Detail> findHouseState() {
        return detailService.findHouseState();
    }

    /*
     * 查询护工状态
     * */
    @GetMapping("/findNurseState")
    public List<Detail> findNurseState() {
        return detailService.findNurseState();
    }

    /*
     * 查询床位状态
     * */
    @GetMapping("/findBedState")
    public List<Detail> findBedState() {
        return detailService.findBedState();
    }

    /*
     * 查询老人性别
     * */
    @GetMapping("/findOldManSex")
    public List<Detail> findOldManSex() {
        return detailService.findOldManSex();
    }

    /*
     * 查询老人身体状况
     * */
    @GetMapping("/findOldManPhysical")
    public List<Detail> findOldManPhysical() {
        return detailService.findOldManPhysical();
    }

    /*
     * 查询是否有电梯 字典
     * */
    @GetMapping("/findElevatorType")
    public List<Detail> findElevatorType() {
        return detailService.findElevatorType();
    }

    /*
     * 查询是否是精装修 字典
     * */
    @GetMapping("/findDecorationType")
    public List<Detail> findDecorationType() {
        return detailService.findDecorationType();
    }

    /*
     * 查询房屋类型 字典
     * */
    @GetMapping("/findHousingType")
    public List<Detail> findHousingType() {
        return detailService.findHousingType();
    }

    /*
     * 查询成员类型 字典
     * */
    @GetMapping("/findMemberType")
    public List<Detail> findMemberType() {
        return detailService.findMemberType();
    }

    /*
     * 通过id查询单个信息
     * */
    @GetMapping("/{id}")
    public Detail findById(@PathVariable("id") Long id) {
        return detailService.findById(id);
    }

    /*
     * 通过typesId查询明细信息
     * */
    @GetMapping("/findByTypesId/{typesId}")
    public List<Detail> findByTypesId(@PathVariable("typesId") Long typesId) {
        return detailService.findByTypesId(typesId);
    }

    /*
     * 通过id删除单个信息
     * */
    @DeleteMapping("/{id}")
    public AjaxResult deleteById(@PathVariable("id") Long id) {

        // 调用删除方法
        detailService.delete(id);
        // 返回成功的AjaxResult
        return AjaxResult.me().success();

    }

    /*
     * 新增或者修改信息 put
     * */
    @PutMapping()
    public AjaxResult addOrUpdate(@RequestBody Detail detail) {

        if (detail.getId() == null) { // 如果id为空，那么执行新增方法
            detailService.add(detail);
        } else { // 否则执行修改方法
            detailService.update(detail);
        }
        return AjaxResult.me().success();
    }

    /*
     * 分页查询
     * */
    @PostMapping()
    public PageList<Detail> queryByPage(@RequestBody DetailQuery query) {
        return detailService.queryByPage(query);
    }

    /*
     * 批量删除信息
     * */
    @PatchMapping()
    public AjaxResult batchDelete(@RequestBody List<Long> ids) {
        detailService.batchDelete(ids);
        return AjaxResult.me().success();
    }
}
